#pragma once
#include "ViewportClient.h"
#include "Runtime/Base/Object.h"

namespace Alice
{
    class Viewport;
    class ViewportWidget;
    class ViewportFrame;
    class SceneViewport;
    class GameInstance;
    class GameViewportClient : public Object, public CommonViewportClient
    {
    public:
        Viewport* mViewport;
        World* mWorld;
        GameInstance*mGameInstance;
        World* GetWorld() const override;
        GameInstance* GetGameInstance() const;
        virtual void Init(struct WorldContext& WorldContext, GameInstance* OwningGameInstance, bool bCreateNewAudioDevice = true);
        virtual SceneViewport* CreateGameViewport(ViewportWidget* InViewportWidget);
        virtual void SetViewportFrame(ViewportFrame* InViewportFrame);
        virtual void SetViewport(Viewport* InViewportFrame);
        virtual void Draw(Viewport* inViewport) override;
    };
}
